Communication between devices over a network is a well-established technology that has been around in one form or another for decades. In one manifestation, a network having various protocols is used that enables the delivery of packets of data from a source to a destination through various communication elements such as switches and routers.
Basically, a star topology is used with respect of the communication of the various devices through a switch. That is, all the devices are connected to a switch, which has an internal logic that then switches the packets to the desired direction. Hence, if a device A wishes to send a packet to a device B, a packet is sent to a switch which includes the network address of device B. The switch then routes the packet that was received by the switch to the device B being the packet's destination. Naturally more complex architectures may be used with this respect, but the basic concept is this kind of routing.
With the advance of virtual machines (VMs), it is also necessary to have network communication occurring between VMs. A VM is an operating environment that executes over a computing hardware with its own guest operating system (OS), at times simply referred to as a guest. A VM can execute applications that run within the confines of its respective OS. Currently, for the purpose of communication between VMs, and in particular between guests, the virtual environment mimics the physical environment by having a central switch, to which all packets of data that need to be transferred are routed, and that has the necessary logic to send the packets to the appropriate destinations. However, in the virtualized environment such a centralized implementation results in unnecessary overhead and complexity as well as a balancing issue, or even a need to dedicate a separate VM for the sole purpose of switching.
It would be therefore advantageous to provide a solution that overcomes the deficiencies of centralized communication between guests of VMs in a virtual environment.